gusucode.com > 现代通信系统——使用MATLAB(+全部程序) > 现代通信系统——使用MATLAB(+全部程序)/现代通信系统——使用MATLAB(+全部程序)/Matlab 程序/Chapter9/ss_pe42.m
function [p]=ss_Pe42(rho_in_dB) % [p]=ss_Pe42(rho_in_dB) % SS_PE42 finds the measured error rate for the given value of % signal per interference ratio in dB. rho=10^(rho_in_dB/10); Eb=rho; % energy per information bit E=Eb/2; % energy per symbol transmitted % the optimal value of alpha if (rho>2), alpha=2/rho; else alpha=1; end; % the variance of the additive noise if (E>1), sgma=sqrt(E/2); else sgma=sqrt(1/2); end; N=10000; % number of bits transmitted % generation of the data sequence for i=1:N, temp=rand; if (temp<0.5) data(i)=1; else data(i)=0; end; end; % find the transmitted signals for i=1:N, if (data(i)==0), tr11c(i)=sqrt(E); tr12c(i)=sqrt(E); tr11s(i)=0; tr12s(i)=0; tr21c(i)=0; tr22c(i)=0; tr21s(i)=0; tr22s(i)=0; else tr11c(i)=0; tr12c(i)=0; tr11s(i)=0; tr12s(i)=0; tr21c(i)=sqrt(E); tr22c(i)=sqrt(E); tr21s(i)=0; tr22s(i)=0; end; end; % find the received signals, make the decisions and count the number of errors. num_of_err=0; for i=1:N, % determine if there is jamming if (rand<alpha), jamming1=1; % jamming present on the second transmission else jamming1=0; % jamming not present on the first transmission end; if (rand<alpha), jamming2=1; % jamming present on the second transmission else jamming2=0; % jamming not present on the second transmission end; % the the received signals if (jamming1==1) r11c=tr11c(i)+gngauss(sgma); r11s=tr11s(i)+gngauss(sgma); r21c=tr21c(i)+gngauss(sgma); r21s=tr21s(i)+gngauss(sgma); else r11c=tr11c(i); r11s=tr11s(i); r21c=tr21c(i); r21s=tr21s(i); end; if (jamming2==1) r12c=tr12c(i)+gngauss(sgma); r12s=tr12s(i)+gngauss(sgma); r22c=tr22c(i)+gngauss(sgma); r22s=tr22s(i)+gngauss(sgma); else r12c=tr12c(i); r12s=tr12s(i); r22c=tr22c(i); r22s=tr22s(i); end; % compute the decision variables, first the weights if (jamming1==1), w1=1/sgma^2; else w1=10; end; if (jamming2==1), w2=1/sgma^2; else w2=10; end; % the intermediate decision variables are r11=r11c^2+r11s^2; r12=r12c^2+r12s^2; r21=r21c^2+r21s^2; r22=r22c^2+r22s^2; % the decision variables x and y x=w1*r11+w2*r12; y=w1*r21+w2*r22; % make the decision now if (x>y), decis=0; else decis=1; end; % increment the counter if this is an error if (decis~=data(i)), num_of_err=num_of_err+1; end; end; % the measured bit error rate is then p=num_of_err/N;